package com.ruoyi.system.service.impl;

import com.ruoyi.common.snmp.getSnmp.SNMPSessionUtil;
import com.ruoyi.system.domain.SnmpSystem;
import com.ruoyi.system.mapper.SnmpSystemMapper;
import com.ruoyi.system.service.ISnmpSystemService;
import org.snmp4j.PDU;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 【请填写功能名称】Service业务层处理
 *
 * @author ruoyi
 * @date 2025-02-05
 */
@Service
public class SnmpSystemServiceImpl implements ISnmpSystemService
{
    @Autowired
    private SnmpSystemMapper snmpSystemMapper;
    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public SnmpSystem selectSnmpSystemById(Long id)
    {
        return snmpSystemMapper.selectSnmpSystemById(id);
    }
    @Override
    public void getBase(String ip) throws Exception {
        String[] oids = {"1.3.6.1.2.1.1.1.0", "1.3.6.1.2.1.1.2.0", "1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.4.0", "1.3.6.1.2.1.1.5.0", "1.3.6.1.2.1.1.6.0", "1.3.6.1.2.1.1.7.0"};
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SNMPSessionUtil sessionUtil = new SNMPSessionUtil(ip,"161","public","2");
        String[] issnmp ={"1.3.6.1.2.1.1.1.0"};
        SnmpSystem systemInfo = new SnmpSystem();
        List<SnmpSystem> list = new ArrayList<>();
        ArrayList<String> isSnmpGet = sessionUtil.getIsSnmpGet(PDU.GET, issnmp);
        System.out.println(isSnmpGet);
        if ("-1".equals(isSnmpGet.get(0))){
            systemInfo.setIp(ip);
            systemInfo.setSysDecsr("SNMP未响应");
            systemInfo.setSysObjectID("SNMP未响应");
            systemInfo.setSysUpTime("SNMP未响应");
            systemInfo.setSysContact("SNMP未响应");
            systemInfo.setSysName("SNMP未响应");
            systemInfo.setSysLocation("SNMP未响应");
            systemInfo.setSysService("SNMP未响应");
        }else {
            ArrayList<String> base = sessionUtil.getSnmpGet(PDU.GET, oids);
            systemInfo.setIp(ip);
            systemInfo.setSysDecsr(base.get(0));
            systemInfo.setSysObjectID(base.get(1));
            systemInfo.setSysUpTime(base.get(2));
            systemInfo.setSysContact(base.get(3));
            systemInfo.setSysName(base.get(4));
            systemInfo.setSysLocation(base.get(5));
            systemInfo.setSysService(base.get(6));
        }
        SnmpSystem serchInfo = new SnmpSystem();
        serchInfo.setIp(ip);
        List<SnmpSystem> aryyListSeach= snmpSystemMapper.selectSnmpSystemList(serchInfo);
        SnmpSystem entity=null;
        if(aryyListSeach.size()>0)
            entity=aryyListSeach.get(0);
        if(entity!=null && entity.getIp()!=null&&entity.getIp().length()>0){
            systemInfo.setTypeName(entity.getTypeName());
            systemInfo.setName(entity.getName());
            systemInfo.setSelfDecs(entity.getSelfDecs());
            if("-1".equals(isSnmpGet.get(0))) {
                systemInfo=entity;
                systemInfo.setCommunity("SNMP未响应");
            }
            snmpSystemMapper.deleteBaseInfo(ip);
        }
        systemInfo.setTime(df.format(new Date()));
        snmpSystemMapper.insertSnmpSystem(systemInfo);
    }

    @Override
    public SnmpSystem getBaseInfo(String ip) {
        return snmpSystemMapper.getBaseInfo(ip);
    }
    /**
     * 查询列表
     *
     * @param snmpSystem 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<SnmpSystem> selectSnmpSystemList(SnmpSystem snmpSystem)
    {
        return snmpSystemMapper.selectSnmpSystemList(snmpSystem);
    }
    @Override
    public List<SnmpSystem> getSnmpDeviceSystem(){
        return snmpSystemMapper.getSnmpDeviceSystem();
    }
    /**
     * 新增【请填写功能名称】
     *
     * @param snmpSystem 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertSnmpSystem(SnmpSystem snmpSystem)
    {
        return snmpSystemMapper.insertSnmpSystem(snmpSystem);
    }

    /**
     * 修改【请填写功能名称】
     *
     * @param snmpSystem 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateSnmpSystem(SnmpSystem snmpSystem)
    {
        return snmpSystemMapper.updateSnmpSystem(snmpSystem);
    }

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteSnmpSystemByIds(Long[] ids)
    {
        return snmpSystemMapper.deleteSnmpSystemByIds(ids);
    }

    /**
     * 删除【请填写功能名称】信息
     *
     * @param id 【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteSnmpSystemById(Long id)
    {
        return snmpSystemMapper.deleteSnmpSystemById(id);
    }



}
